[XEN] Never crash machine on int3 traps.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 4 Oct 2006 08:10:17 +0000 (09:10 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 4 Oct 2006 08:10:17 +0000 (09:10 +0100)
Do not enter debugger on dom0 shutdown unless dom0 crashed.
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/common/shutdown.c
xen/include/asm-x86/debugger.h

index 1baea16205ce1a318c85720c1c1627a3bc1535b1..a994e14bfc8abd1ec6c3cfd7d6895000234bd0ec 100644 (file)
@@ -30,8 +30,6 @@ static void maybe_reboot(void)
 
 void dom0_shutdown(u8 reason)
 {
-    debugger_trap_immediate();
-
     switch ( reason )
     {
     case SHUTDOWN_poweroff:
@@ -43,6 +41,7 @@ void dom0_shutdown(u8 reason)
 
     case SHUTDOWN_crash:
     {
+        debugger_trap_immediate();
         printk("Domain 0 crashed: ");
         maybe_reboot();
         break; /* not reached */
index 743dc2d8e5d528bfb4a2503d107c6e0d9ee7beb8..b5256523e9a188f3f8b0c6f7de62bec633d7c8ae 100644 (file)
@@ -46,7 +46,8 @@
 static inline int debugger_trap_fatal(
     unsigned int vector, struct cpu_user_regs *regs)
 {
-    return (__trap_to_gdb(regs, vector) == 0);
+    int rc = __trap_to_gdb(regs, vector);
+    return ((rc == 0) || (vector == TRAP_int3));
 }
 
 /* Int3 is a trivial way to gather cpu_user_regs context. */